<?php
namespace Admin\Controller;
use Think\Controller;
use Common\ORG\Util\AuthTable;

/**
 * 权限系统安装
 * @author Evan <tangzwgo@163.com>
 * @since 2016-07-27
 */
class InstallController extends Controller {
	/**
	 * 安装入口
	 */
	public function index() {
		//验证是否配置数据库
		$db_type = C('DB_TYPE');
		if(!$db_type) {
			echo '请完善数据库配置：[DB_TYPE] <br>';
			exit();
		}
		
		$db_host = C('DB_HOST');
		if(!$db_host) {
			echo '请完善数据库配置：[DB_HOST] <br>';
			exit();
		}
		
		$db_name = C('DB_NAME');
		if(!$db_name) {
			echo '请完善数据库配置：[DB_NAME] <br>';
			exit();
		}
		
		$db_user = C('DB_USER');
		if(!$db_user) {
			echo '请完善数据库配置：[DB_USER] <br>';
			exit();
		}
		
		$db_pwd = C('DB_PWD');
		if(!$db_pwd) {
			echo '请完善数据库配置：[DB_PWD] <br>';
		}
		
		$db_port = C('DB_PORT');
		if(!$db_port) {
			echo '请完善数据库配置：[DB_PORT] <br>';
			exit();
		}
		
		//验证数据是否存在
		$this->checkDbExist($db_name);				
		
		//创建数据表
		echo '==============创建数据表开始==============<br>';
		
		//连接数据库
		$connection = $this->connectionDatabase();
		
		//创建应用表
		$flag1 = $this->initTableApp();
		//创建用户表
		$flag2 = $this->initTableUser();
		//创建用户组表
		$flag3 = $this->initTableUserGroup();
		//创建功能表
		$flag4 = $this->initTableFunction();
		//创建功能组表
		$flag5 = $this->initTableFunctionGroup();
		//创建菜单表
		$flag6 = $this->initTableMenu();
		//创建用户-应用表
		$flag7 = $this->initTableUserApp();
		//创建用户-功能表
		$flag8 = $this->initTableUserFunction();
		//创建用户-用户组表
		$flag9 = $this->initTableUserUserGroup();
		//创建用户组-功能表
		$flag10 = $this->initTableUserGroupFunction();
		//创建部门表
		$flag11 = $this->initTableDepartment();
		//创建岗位表
		$flag12 = $this->initTablePosition();
		//创建登录日志组表
		$this->initTableLoginLog();
		//创建访问日志组表
		$this->initTableAccessLog();
		
		//关闭数据库
		$this->closeDatabase($connection);
		echo '==============创建数据表结束==============<br>';
		
		echo '==============初始化权限开始==============<br>';
		
		$flag1 && $this->initAuthData(AuthTable::TB_APP);
		$flag11 && $this->initAuthData(AuthTable::TB_AUTH_DEPARTMENT);
		$flag12 && $this->initAuthData(AuthTable::TB_AUTH_POSITION);
		$flag2 && $this->initAuthData(AuthTable::TB_AUTH_USER);
		$flag5 && $this->initAuthData(AuthTable::TB_AUTH_FUNCTION_GROUP);
		$flag4 && $this->initAuthData(AuthTable::TB_AUTH_FUNCTION);
		$flag3 && $this->initAuthData(AuthTable::TB_AUTH_USER_GROUP);
		$flag10 && $this->initAuthData(AuthTable::TB_AUTH_USERGROUP_FUNCTION);
		$flag9 && $this->initAuthData(AuthTable::TB_AUTH_USER_USERGROUP);
		$flag8 && $this->initAuthData(AuthTable::TB_AUTH_USER_FUNCTION);
		$flag7 && $this->initAuthData(AuthTable::TB_AUTH_USER_APP);
		$flag6 && $this->initAuthData(AuthTable::TB_AUTH_MENU);
		
		echo '==============初始化权限开始==============<br>';
		echo '==============权限系统初始化完毕==============<br>';
		echo 'URL:<a target="_black" href="http://'.C('AUTH_DOMAIN').'">http://'.C('AUTH_DOMAIN').'</a><br>';
		echo 'User:admin<br>';
		echo 'password:admin<br>';
	}
	
	/**
	 * 初始化权限数据
	 * @param unknown $table
	 */
	private function initAuthData($table) {
		if($table == AuthTable::TB_APP) {
			//初始化应用
			$data = ['id'=>1,
					'app_id'=>C('APP_ID'), 
					'name'=>C('APP_NAME'), 
					'app_secret'=>C('APP_SECRET'), 
					'token'=>C('TOKEN'), 
					'encoding_AESKey'=>C('ENCODING_AES_KEY'), 
					'is_encryption'=>C('IS_ENCRYPTION'), 
					'create_time'=>time(), 
					'type'=>1, 
					'is_auth'=>1, 
					'domain'=>C('ADMIN_DOMAIN')];
			$result = M(AuthTable::TB_APP)->add($data);
			if($result) {
				echo "".C('APP_NAME')."应用初始化成功：<br>";
				echo "===>AppID：".C('APP_ID')."<br>";
				echo "===>应用名称：".C('APP_NAME')."<br>";
				echo "===>秘钥：".C('APP_SECRET')."<br>";
				echo "===>令牌：".C('TOKEN')."<br>";
				echo "===>消息加解密密钥：".C('ENCODING_AES_KEY')."<br>";
				echo "===>是否需要加密：".C('IS_ENCRYPTION')."<br>";
				return $result;
			} else {
				echo "".C('APP_NAME')."应用初始化失败<br>";
				return 0;
			}
		} else if($table == AuthTable::TB_AUTH_DEPARTMENT) {
			//部门
			$data = ['id'=>1,'name'=>'技术部', 'create_time'=>time()];
			$result = M(AuthTable::TB_AUTH_DEPARTMENT)->add($data);
			if($result) {
				echo "部门初始化成功：<br>";
				return $result;
			} else {
				echo "部门初始化失败<br>";
				return 0;
			}
		} else if($table == AuthTable::TB_AUTH_POSITION) {
			//岗位
			$data = ['id'=>1,'code'=>'PHP', 'name'=>'php开发工程师', 'create_time'=>time()];
			$result = M(AuthTable::TB_AUTH_POSITION)->add($data);
			if($result) {
				echo "岗位初始化成功：<br>";
				return $result;
			} else {
				echo "岗位初始化失败<br>";
				return 0;
			}
		} else if($table == AuthTable::TB_AUTH_USER) {
			//用户
			$data = ['id'=>1,
					'username'=>'admin', 
					'password'=>md5('admin'), 
					'name'=>'系统管理员', 
					'nickname'=>'Admin',
					'sex'=>1,
					'department_id'=>1,
					'position_id'=>1,
					'work_number'=>'00001',
					'img'=>'AdminLTE/dist/img/user2-160x160.jpg',
					'desc'=>'系统管理员账号',
					'wechat'=>'tangzwgo',
					'qq'=>'353605552',
					'email'=>'tangzwgo@foxmail.com',
					'school'=>'湖南科技学院-计算机与通信工程系-计算机科学与技术',
					'address'=>'上海市-浦东新区',
					'skill'=>'php,java,android,javascript,linux',
					'create_time'=>time()];
			$result = M(AuthTable::TB_AUTH_USER)->add($data);
			if($result) {
				echo "系统管理员账号初始化成功：<br>";
				echo "===>username：admin<br>";
				echo "===>password：admin<br>";
				return $result;
			} else {
				echo "系统管理员账号失败<br>";
				return 0;
			}
		} else if($table == AuthTable::TB_AUTH_FUNCTION_GROUP) {
			//功能组
			$data = [];
			$data[] = ['id'=>1, 'name'=>'首页', 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>2, 'name'=>'权限管理', 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>3, 'name'=>'账号管理', 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>4, 'name'=>'应用管理', 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>5, 'name'=>'日志管理', 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$result = M(AuthTable::TB_AUTH_FUNCTION_GROUP)->addAll($data);
			if($result) {
				echo "功能组初始化成功：<br>";
				return $result;
			} else {
				echo "功能组初始化失败<br>";
				return 0;
			}
		} else if($table == AuthTable::TB_AUTH_FUNCTION) {
			//功能
			$data = [];
			$data[] = ['id'=>1, 'path'=>'/admin/index/index', 'name'=>'首页', 'group_id'=>1, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			
			$data[] = ['id'=>2, 'path'=>'/admin/auth/functionGroupList', 'name'=>'功能组列表', 'group_id'=>2, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>3, 'path'=>'/admin/auth/saveFunctionGroup', 'name'=>'保存功能组信息', 'group_id'=>2, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>4, 'path'=>'/admin/auth/userGroupList', 'name'=>'用户组列表', 'group_id'=>2, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>5, 'path'=>'/admin/auth/saveUserGroup', 'name'=>'保存用户组信息', 'group_id'=>2, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>6, 'path'=>'/admin/auth/functionList', 'name'=>'功能列表', 'group_id'=>2, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>7, 'path'=>'/admin/auth/saveFunction', 'name'=>'保存功能信息', 'group_id'=>2, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>8, 'path'=>'/admin/auth/setUserGroupFunction', 'name'=>'设置用户组功能', 'group_id'=>2, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>9, 'path'=>'/admin/auth/saveUserGroupFunction', 'name'=>'保存用户组功能', 'group_id'=>2, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>10, 'path'=>'/admin/auth/menuList', 'name'=>'菜单列表', 'group_id'=>2, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>11, 'path'=>'/admin/auth/addMenu', 'name'=>'添加菜单', 'group_id'=>2, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>12, 'path'=>'/admin/auth/updateMenu', 'name'=>'修改菜单', 'group_id'=>2, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>13, 'path'=>'/admin/auth/deleteMenu', 'name'=>'删除菜单', 'group_id'=>2, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			
			$data[] = ['id'=>14, 'path'=>'/admin/user/userList', 'name'=>'用户列表', 'group_id'=>3, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>15, 'path'=>'/admin/user/editUserInfo', 'name'=>'编辑用户信息', 'group_id'=>3, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>16, 'path'=>'/admin/user/saveUser', 'name'=>'保存用户信息', 'group_id'=>3, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>17, 'path'=>'/admin/user/userFunctionList', 'name'=>'用户功能列表', 'group_id'=>3, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>18, 'path'=>'/admin/user/setUserFunction', 'name'=>'设置用户功能', 'group_id'=>3, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>19, 'path'=>'/admin/user/saveUserFunction', 'name'=>'保存用户功能', 'group_id'=>3, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>20, 'path'=>'/admin/user/setUserExtFunction', 'name'=>'设置用户扩展功能', 'group_id'=>3, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>21, 'path'=>'/admin/user/saveUserRelationApp', 'name'=>'保存用户可访问系统', 'group_id'=>3, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>22, 'path'=>'/admin/user/deleteUser', 'name'=>'关闭/开启账号', 'group_id'=>3, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>23, 'path'=>'/admin/user/departmentList', 'name'=>'部门列表', 'group_id'=>3, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>24, 'path'=>'/admin/user/saveDepartment', 'name'=>'保存部门信息', 'group_id'=>3, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>25, 'path'=>'/admin/user/positionList', 'name'=>'岗位列表', 'group_id'=>3, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>26, 'path'=>'/admin/user/savePosition', 'name'=>'保存岗位信息', 'group_id'=>3, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			
			$data[] = ['id'=>27, 'path'=>'/admin/app/appList', 'name'=>'应用列表', 'group_id'=>4, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>28, 'path'=>'/admin/app/editApp', 'name'=>'编辑应用', 'group_id'=>4, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>29, 'path'=>'/admin/app/saveApp', 'name'=>'保存应用信息', 'group_id'=>4, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>30, 'path'=>'/admin/app/deleteApp', 'name'=>'删除应用', 'group_id'=>4, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			
			$data[] = ['id'=>31, 'path'=>'/admin/log/loginLog', 'name'=>'登录日志', 'group_id'=>5, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$result = M(AuthTable::TB_AUTH_FUNCTION)->addAll($data);
			if($result) {
				echo "功能初始化成功：<br>";
				return $result;
			} else {
				echo "功能初始化失败<br>";
				return 0;
			}
		} else if($table == AuthTable::TB_AUTH_USER_GROUP) {
			//用户组
			$data = ['id'=>1, 'name'=>'系统管理员', 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$result = M(AuthTable::TB_AUTH_USER_GROUP)->add($data);
			if($result) {
				echo "用户组初始化成功：<br>";
				return $result;
			} else {
				echo "用户组始化失败<br>";
				return 0;
			}
		} else if($table == AuthTable::TB_AUTH_USERGROUP_FUNCTION) {
			//用户组-功能
			$data = [];
			for($i=1; $i<=31; $i++) {
				$data[] = ['id'=>$i, 'user_group_id'=>1, 'function_id'=>$i, 'create_time'=>time()];
			}
			$result = M(AuthTable::TB_AUTH_USERGROUP_FUNCTION)->addAll($data);
			if($result) {
				echo "用户组功能初始化成功：<br>";
				return $result;
			} else {
				echo "用户组功能始化失败<br>";
				return 0;
			}
		} else if($table == AuthTable::TB_AUTH_USER_USERGROUP) {
			//用户组-用户
			$data = ['id'=>1, 'user_group_id'=>1, 'user_id'=>1, 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$result = M(AuthTable::TB_AUTH_USER_USERGROUP)->add($data);
			if($result) {
				echo "用户-用户组初始化成功：<br>";
				return $result;
			} else {
				echo "用户-用户组始化失败<br>";
				return 0;
			}
		} else if($table == AuthTable::TB_AUTH_USER_FUNCTION) {
			//用户-功能
			$data = ['id'=>1, 'user_id'=>1, 'function_ids'=>'1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31', 'app_id'=>C('APP_ID'), 'update_time'=>date('Y-m-d H:i:s')];
			$result = M(AuthTable::TB_AUTH_USER_FUNCTION)->add($data);
			if($result) {
				echo "用户功能初始化成功：<br>";
				return $result;
			} else {
				echo "用户功能始化失败<br>";
				return 0;
			}
		} else if($table == AuthTable::TB_AUTH_USER_APP) {
			//用户-功能
			$data = ['id'=>1, 'uid'=>1, 'app_id'=>C('APP_ID')];
			$result = M(AuthTable::TB_AUTH_USER_APP)->add($data);
			if($result) {
				echo "用户应用初始化成功：<br>";
				return $result;
			} else {
				echo "用户应用始化失败<br>";
				return 0;
			}
		} else if($table == AuthTable::TB_AUTH_MENU) {
			//菜单组
			$data = [];
			$data[] = ['id'=>1, 'pid'=>0, 'name'=>'首页', 'sort_id'=>5000, 'function_id'=>1, 'icon'=>'fa fa-fw fa-home', 'url_extend'=>'', 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>2, 'pid'=>0, 'name'=>'权限管理', 'sort_id'=>10000, 'function_id'=>0, 'icon'=>'fa fa-fw fa-tachometer', 'url_extend'=>'', 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>3, 'pid'=>2, 'name'=>'用户组列表', 'sort_id'=>11000, 'function_id'=>4, 'icon'=>'', 'url_extend'=>'', 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>4, 'pid'=>2, 'name'=>'功能组列表', 'sort_id'=>12000, 'function_id'=>2, 'icon'=>'', 'url_extend'=>'', 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>5, 'pid'=>2, 'name'=>'功能列表', 'sort_id'=>13000, 'function_id'=>6, 'icon'=>'', 'url_extend'=>'', 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>6, 'pid'=>2, 'name'=>'菜单列表', 'sort_id'=>14000, 'function_id'=>10, 'icon'=>'', 'url_extend'=>'', 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>7, 'pid'=>0, 'name'=>'账号管理', 'sort_id'=>110000, 'function_id'=>0, 'icon'=>'fa fa-fw fa-users', 'url_extend'=>'', 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>8, 'pid'=>7, 'name'=>'用户列表', 'sort_id'=>120000, 'function_id'=>14, 'icon'=>'', 'url_extend'=>'', 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>9, 'pid'=>7, 'name'=>'部门列表', 'sort_id'=>130000, 'function_id'=>23, 'icon'=>'', 'url_extend'=>'', 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>10, 'pid'=>7, 'name'=>'岗位列表', 'sort_id'=>140000, 'function_id'=>25, 'icon'=>'', 'url_extend'=>'', 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>11, 'pid'=>0, 'name'=>'应用管理', 'sort_id'=>120000, 'function_id'=>0, 'icon'=>'fa fa-fw fa-android', 'url_extend'=>'', 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>12, 'pid'=>11, 'name'=>'应用列表', 'sort_id'=>130000, 'function_id'=>27, 'icon'=>'', 'url_extend'=>'', 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>13, 'pid'=>0, 'name'=>'日志管理', 'sort_id'=>130000, 'function_id'=>0, 'icon'=>'fa fa-fw fa-file-code-o', 'url_extend'=>'', 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$data[] = ['id'=>14, 'pid'=>13, 'name'=>'登录日志', 'sort_id'=>140000, 'function_id'=>31, 'icon'=>'', 'url_extend'=>'', 'app_id'=>C('APP_ID'), 'create_time'=>time()];
			$result = M(AuthTable::TB_AUTH_MENU)->addAll($data);
			if($result) {
				echo "菜单初始化成功：<br>";
				return $result;
			} else {
				echo "菜单初始化失败<br>";
				return 0;
			}
		}
	}
	
	/**
	 * 初始化应用表
	 */
	private function initTableApp() {
		$tb_name = AuthTable::TB_APP;
		
		//验证该表是否存在
		$flag = $this->checkTableExist($tb_name);
		if(!$flag) {
			return $flag;
		}
		
		//创建表
		$sql = "CREATE TABLE `{$tb_name}` (
				  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '记录id',
				  `app_id` varchar(64) NOT NULL DEFAULT '' COMMENT '应用id',
				  `name` varchar(64) NOT NULL DEFAULT '' COMMENT '应用名称',
				  `app_secret` varchar(64) NOT NULL DEFAULT '' COMMENT '应用秘钥',
				  `token` varchar(64) NOT NULL DEFAULT '' COMMENT '令牌',
				  `encoding_AESKey` varchar(64) NOT NULL DEFAULT '' COMMENT '消息加解密密钥（43位）',
				  `is_encryption` tinyint(3) NOT NULL DEFAULT '1' COMMENT '是否需要加密1是0否',
				  `status` tinyint(3) NOT NULL DEFAULT '1' COMMENT '应用状态1正常-1删除',
				  `create_time` int(11) NOT NULL DEFAULT '0' COMMENT '添加时间',
				  `ip_list` varchar(512) NOT NULL DEFAULT '' COMMENT 'ip白名单，多个用逗号分隔',
				  `type` tinyint(3) NOT NULL DEFAULT '1' COMMENT '应用类型1内部系统 2APP 5第三方应用',
				  `is_auth` tinyint(3) NOT NULL DEFAULT '1' COMMENT '是否需要设置权限1是0否',
				  `domain` varchar(32) NOT NULL DEFAULT '' COMMENT '域名',
				  PRIMARY KEY (`id`),
				  UNIQUE KEY `app_id` (`app_id`)
				) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='应用表'";
		$result = mysql_query($sql);
		if($result) {
			echo "表：[{$tb_name}]创建成功 <br>";
			return true;
		} else {
			echo "表：[{$tb_name}]创建失败 <br>";
			return false;
		}
	}
	
	/**
	 * 初始化用户表
	 */
	private function initTableUser() {
		$tb_name = AuthTable::TB_AUTH_USER;
	
		//验证该表是否存在
		$flag = $this->checkTableExist($tb_name);
		if(!$flag) {
			return $flag;
		}
	
		//创建表
		$sql = "CREATE TABLE `{$tb_name}` (
				  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',
				  `username` varchar(32) NOT NULL DEFAULT '' COMMENT '用户名',
				  `password` varchar(32) NOT NULL DEFAULT '' COMMENT '密码',
				  `name` varchar(32) NOT NULL DEFAULT '' COMMENT '姓名',
				  `nickname` varchar(32) NOT NULL COMMENT '昵称',
				  `sex` tinyint(3) NOT NULL DEFAULT '1' COMMENT '性别1男2女',
				  `department_id` int(11) NOT NULL DEFAULT '0' COMMENT '部门id',
				  `position_id` int(11) NOT NULL DEFAULT '0' COMMENT '岗位id',
				  `work_number` varchar(16) NOT NULL DEFAULT '' COMMENT '工号',
				  `img` varchar(128) NOT NULL DEFAULT '' COMMENT '照片',
				  `desc` varchar(1024) NOT NULL DEFAULT '' COMMENT '员工介绍',
				  `status` tinyint(3) NOT NULL DEFAULT '1' COMMENT '状态1正常-1删除',
				  `create_time` int(11) NOT NULL DEFAULT '0' COMMENT '添加时间',
				  `wechat` varchar(32) NOT NULL DEFAULT '' COMMENT '微信号',
				  `qq` varchar(16) NOT NULL DEFAULT '' COMMENT 'QQ号',
				  `email` varchar(64) NOT NULL DEFAULT '' COMMENT '邮箱',
				  `school` varchar(128) NOT NULL DEFAULT '' COMMENT '毕业学校',
				  `address` varchar(128) NOT NULL DEFAULT '' COMMENT '地址',
				  `skill` varchar(256) NOT NULL DEFAULT '' COMMENT '技能',
				  PRIMARY KEY (`id`),
				  UNIQUE KEY `username` (`username`)
				) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='权限系统-用户表'";
		$result = mysql_query($sql);
		if($result) {
			echo "表：[{$tb_name}]创建成功 <br>";
			return true;
		} else {
			echo "表：[{$tb_name}]创建失败 <br>";
			return false;
		}
	}
	
	/**
	 * 初始化用户组表
	 */
	private function initTableUserGroup() {
		$tb_name = AuthTable::TB_AUTH_USER_GROUP;
	
		//验证该表是否存在
		$flag = $this->checkTableExist($tb_name);
		if(!$flag) {
			return $flag;
		}
	
		//创建表
		$sql = "CREATE TABLE `{$tb_name}` (
		`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户组id',
		`name` varchar(64) NOT NULL DEFAULT '' COMMENT '用户组名',
		`app_id` varchar(64) NOT NULL DEFAULT '' COMMENT '应用id',
		`create_time` int(11) NOT NULL DEFAULT '0' COMMENT '添加时间',
		PRIMARY KEY (`id`)
		) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='权限系统-用户组表'";
		$result = mysql_query($sql);
		if($result) {
			echo "表：[{$tb_name}]创建成功 <br>";
			return true;
		} else {
			echo "表：[{$tb_name}]创建失败 <br>";
			return false;
		}
	}
	
	/**
	 * 初始化功能表
	 */
	private function initTableFunction() {
		$tb_name = AuthTable::TB_AUTH_FUNCTION;
	
		//验证该表是否存在
		$flag = $this->checkTableExist($tb_name);
		if(!$flag) {
			return $flag;
		}
	
		//创建表
		$sql = "CREATE TABLE `{$tb_name}` (
				  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '功能id',
				  `path` varchar(128) NOT NULL DEFAULT '' COMMENT '路径',
				  `name` varchar(256) NOT NULL DEFAULT '' COMMENT '名称',
				  `group_id` int(11) NOT NULL DEFAULT '0' COMMENT '功能组ID',
				  `app_id` varchar(64) NOT NULL DEFAULT '' COMMENT '应用id',
				  `create_time` int(11) NOT NULL DEFAULT '0' COMMENT '添加时间',
				  PRIMARY KEY (`id`),
				  UNIQUE KEY `path` (`path`,`app_id`)
				) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='权限系统-功能表'";
		$result = mysql_query($sql);
		if($result) {
			echo "表：[{$tb_name}]创建成功 <br>";
			return true;
		} else {
			echo "表：[{$tb_name}]创建失败 <br>";
			return false;
		}
	}
	
	/**
	 * 初始化功能组表
	 */
	private function initTableFunctionGroup() {
		$tb_name = AuthTable::TB_AUTH_FUNCTION_GROUP;
	
		//验证该表是否存在
		$flag = $this->checkTableExist($tb_name);
		if(!$flag) {
			return $flag;
		}
	
		//创建表
		$sql = "CREATE TABLE `{$tb_name}` (
				  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '功能组id',
				  `name` varchar(64) NOT NULL DEFAULT '' COMMENT '功能组名',
				  `app_id` varchar(64) NOT NULL DEFAULT '' COMMENT '应用id',
				  `create_time` int(11) NOT NULL DEFAULT '0' COMMENT '添加时间',
				  PRIMARY KEY (`id`)
				) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='权限系统-功能组表'";
		$result = mysql_query($sql);
		if($result) {
			echo "表：[{$tb_name}]创建成功 <br>";
			return true;
		} else {
			echo "表：[{$tb_name}]创建失败 <br>";
			return false;
		}
	}
			
	/**
	 * 初始化菜单表
	 */
	private function initTableMenu() {
		$tb_name = AuthTable::TB_AUTH_MENU;
	
		//验证该表是否存在
		$flag = $this->checkTableExist($tb_name);
		if(!$flag) {
			return $flag;
		}
	
		//创建表
		$sql = "CREATE TABLE `{$tb_name}` (
				  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '菜单id',
				  `pid` int(11) NOT NULL DEFAULT '0' COMMENT '父菜单id',
				  `name` varchar(32) NOT NULL DEFAULT '' COMMENT '菜单名称',
				  `sort_id` int(11) NOT NULL DEFAULT '0' COMMENT '顺序',
				  `function_id` int(11) NOT NULL DEFAULT '0' COMMENT '功能id',
				  `url_extend` varchar(64) NOT NULL DEFAULT '' COMMENT '扩展url',
				  `app_id` varchar(64) NOT NULL DEFAULT '' COMMENT '应用id',
				  `create_time` int(11) NOT NULL DEFAULT '0' COMMENT '添加时间',
				  `icon` varchar(128) NOT NULL DEFAULT '' COMMENT '图标',
				  PRIMARY KEY (`id`)
				) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='权限系统-菜单表'";
		$result = mysql_query($sql);
		if($result) {
			echo "表：[{$tb_name}]创建成功 <br>";
			return true;
		} else {
			echo "表：[{$tb_name}]创建失败 <br>";
			return false;
		}
	}
	
	/**
	 * 初始化用户应用表
	 */
	private function initTableUserApp() {
		$tb_name = AuthTable::TB_AUTH_USER_APP;
	
		//验证该表是否存在
		$flag = $this->checkTableExist($tb_name);
		if(!$flag) {
			return $flag;
		}
	
		//创建表
		$sql = "CREATE TABLE `{$tb_name}` (
				  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '记录id',
				  `uid` int(11) NOT NULL DEFAULT '0' COMMENT 'id',
				  `app_id` varchar(64) NOT NULL DEFAULT '' COMMENT '应用id',
				  PRIMARY KEY (`id`)
				) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='权限系统-用户-应用关联表'";
		$result = mysql_query($sql);
		if($result) {
			echo "表：[{$tb_name}]创建成功 <br>";
			return true;
		} else {
			echo "表：[{$tb_name}]创建失败 <br>";
			return false;
		}
	}
	
	/**
	 * 初始化用户功能表
	 */
	private function initTableUserFunction() {
		$tb_name = AuthTable::TB_AUTH_USER_FUNCTION;
	
		//验证该表是否存在
		$flag = $this->checkTableExist($tb_name);
		if(!$flag) {
			return $flag;
		}
	
		//创建表
		$sql = "CREATE TABLE `{$tb_name}` (
				  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '记录id',
				  `user_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户id',
				  `function_ids` varchar(2048) NOT NULL DEFAULT '' COMMENT '功能ID串',
				  `app_id` varchar(64) NOT NULL DEFAULT '' COMMENT '应用id',
				  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
				  PRIMARY KEY (`id`)
				) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='权限系统-用户-功能关联表'";
		$result = mysql_query($sql);
		if($result) {
			echo "表：[{$tb_name}]创建成功 <br>";
			return true;
		} else {
			echo "表：[{$tb_name}]创建失败 <br>";
			return false;
		}
	}
	
	/**
	 * 初始化用户-用户组表
	 */
	private function initTableUserUserGroup() {
		$tb_name = AuthTable::TB_AUTH_USER_USERGROUP;
	
		//验证该表是否存在
		$flag = $this->checkTableExist($tb_name);
		if(!$flag) {
			return $flag;
		}
	
		//创建表
		$sql = "CREATE TABLE `{$tb_name}` (
				  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '记录id',
				  `user_group_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户组id',
				  `user_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户id',
				  `app_id` varchar(64) NOT NULL DEFAULT '' COMMENT '应用id',
				  `create_time` int(11) NOT NULL DEFAULT '0' COMMENT '添加时间',
				  PRIMARY KEY (`id`),
				  UNIQUE KEY `ugid_uid` (`user_group_id`,`user_id`),
				  KEY `user_id` (`user_id`),
				  KEY `user_group_id` (`user_group_id`)
				) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='权限系统-用户-用户组关联表'";
		$result = mysql_query($sql);
		if($result) {
			echo "表：[{$tb_name}]创建成功 <br>";
			return true;
		} else {
			echo "表：[{$tb_name}]创建失败 <br>";
			return false;
		}
	}
	
	/**
	 * 初始化用户组-功能表
	 */
	private function initTableUserGroupFunction() {
		$tb_name = AuthTable::TB_AUTH_USERGROUP_FUNCTION;
	
		//验证该表是否存在
		$flag = $this->checkTableExist($tb_name);
		if(!$flag) {
			return $flag;
		}
	
		//创建表
		$sql = "CREATE TABLE `{$tb_name}` (
				  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '记录id',
				  `user_group_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户组ID',
				  `function_id` int(11) NOT NULL DEFAULT '0' COMMENT '功能ID',
				  `create_time` int(11) NOT NULL DEFAULT '0' COMMENT '添加时间',
				  PRIMARY KEY (`id`),
				  UNIQUE KEY `ugid_funcid` (`user_group_id`,`function_id`)
				) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='权限系统-用户组-功能关联表'";
		$result = mysql_query($sql);
		if($result) {
			echo "表：[{$tb_name}]创建成功 <br>";
			return true;
		} else {
			echo "表：[{$tb_name}]创建失败 <br>";
			return false;
		}
	}
	
	/**
	 * 初始化部门表
	 */
	private function initTableDepartment() {
		$tb_name = AuthTable::TB_AUTH_DEPARTMENT;
	
		//验证该表是否存在
		$flag = $this->checkTableExist($tb_name);
		if(!$flag) {
			return $flag;
		}
	
		//创建表
		$sql = "CREATE TABLE `{$tb_name}` (
				  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '部门id',
				  `name` varchar(64) NOT NULL DEFAULT '' COMMENT '部门名称',
				  `create_time` int(11) NOT NULL DEFAULT '0' COMMENT '添加时间',
				  PRIMARY KEY (`id`)
				) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='权限系统-部门表'";
		$result = mysql_query($sql);
		if($result) {
			echo "表：[{$tb_name}]创建成功 <br>";
			return true;
		} else {
			echo "表：[{$tb_name}]创建失败 <br>";
			return false;
		}
	}
	
	/**
	 * 初始化岗位表
	 */
	private function initTablePosition() {
		$tb_name = AuthTable::TB_AUTH_POSITION;
	
		//验证该表是否存在
		$flag = $this->checkTableExist($tb_name);
		if(!$flag) {
			return $flag;
		}
	
		//创建表
		$sql = "CREATE TABLE `{$tb_name}` (
				  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '记录id',
				  `code` varchar(16) NOT NULL DEFAULT '' COMMENT '职位代码',
				  `name` varchar(32) NOT NULL DEFAULT '' COMMENT '职位名称',
				  `create_time` int(11) NOT NULL DEFAULT '0' COMMENT '添加时间',
				  PRIMARY KEY (`id`)
				) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='权限系统-职位表'";
		$result = mysql_query($sql);
		if($result) {
			echo "表：[{$tb_name}]创建成功 <br>";
			return true;
		} else {
			echo "表：[{$tb_name}]创建失败 <br>";
			return false;
		}
	}
	
	/**
	 * 初始化登录日志表
	 */
	private function initTableLoginLog() {
		$tb_name = AuthTable::TB_LOG_AUTH_LOGIN;
	
		//验证该表是否存在
		$flag = $this->checkTableExist($tb_name);
		if(!$flag) {
			return $flag;
		}
	
		//创建表
		$sql = "CREATE TABLE `{$tb_name}` (
				  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '记录id',
				  `user_id` mediumint(8) DEFAULT '0' COMMENT '用户id',
				  `ip` varchar(32) DEFAULT '' COMMENT '登录ip',
				  `app_id` varchar(64) NOT NULL DEFAULT '' COMMENT '应用id',
				  `create_time` int(11) NOT NULL DEFAULT '0' COMMENT '登录时间',
				  PRIMARY KEY (`id`)
				) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='权限系统-用户登录日志表'";
		$result = mysql_query($sql);
		if($result) {
			echo "表：[{$tb_name}]创建成功 <br>";
			return true;
		} else {
			echo "表：[{$tb_name}]创建失败 <br>";
			return false;
		}
	}
	
	/**
	 * 初始化访问日志表
	 */
	private function initTableAccessLog() {
		$tb_name = AuthTable::TB_LOG_AUTH_ACCESS;
	
		//验证该表是否存在
		$flag = $this->checkTableExist($tb_name);
		if(!$flag) {
			return $flag;
		}
	
		//创建表
		$sql = "CREATE TABLE `{$tb_name}` (
				  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '记录id',
				  `app_id` varchar(64) NOT NULL DEFAULT '' COMMENT '应用id',
				  `user_id` mediumint(8) NOT NULL DEFAULT '0' COMMENT '用户id',
				  `function_group_id` int(11) NOT NULL DEFAULT '0' COMMENT '功能组id',
				  `function_id` int(11) NOT NULL DEFAULT '0' COMMENT '功能id',
				  `url` varchar(256) NOT NULL DEFAULT '' COMMENT '访问url',
				  `get` varchar(2048) NOT NULL DEFAULT '' COMMENT 'get参数',
				  `post` varchar(2048) NOT NULL DEFAULT '' COMMENT 'post参数',
				  `server_info` varchar(2048) NOT NULL DEFAULT '' COMMENT '服务器信息',
				  `create_time` int(11) NOT NULL DEFAULT '0' COMMENT '访问时间',
				  PRIMARY KEY (`id`),
				  KEY `user_info` (`user_id`)
				) ENGINE=InnoDB AUTO_INCREMENT=990 DEFAULT CHARSET=utf8 COMMENT='权限系统-用户访问日志表'";
		$result = mysql_query($sql);
		if($result) {
			echo "表：[{$tb_name}]创建成功 <br>";
			return true;
		} else {
			echo "表：[{$tb_name}]创建失败 <br>";
			return false;
		}
	}
	
	/**
	 * 连接数据库
	 */
	private function connectionDatabase() {
		$connection = mysql_connect(C('DB_HOST'), C('DB_USER'), C('DB_PWD'));
		!$connection && die("连接数据库失败1001");
		 
		mysql_select_db(C('DB_NAME')) or die("连接数据库失败1002");
		
		return $connection;
	}
	
	/**
	 * 关闭数据库
	 */
	private function closeDatabase($connection) {
		mysql_close($connection);
	}
	
	/**
	 * 验证表是否存在
	 * @param unknown $tb_name
	 */
	private function checkTableExist($tb_name) {
		$sql = "SHOW TABLES LIKE '{$tb_name}'";
		$result = M()->query($sql);
		if($result) {
			echo "数据表：[{$db_name}]已存在，创建失败，您可以先删除该表后重试，或手动创建该表。 <br>";
			return false;
		} else {
			return true;
		}
	}
	
	/**
	 * 检查数据库是否存在
	 * @param unknown $db_name
	 */
	private function checkDbExist($db_name) {
		$sql = "SELECT * FROM information_schema.SCHEMATA WHERE SCHEMA_NAME='{$db_name}'";
		$result = M()->query($sql);
		if(!$result) {
			echo "数据库：[{$db_name}]不存在，请先创建该数据库 <br>";
			exit();
		}
	}
} 